// console.log('a');

// for (var i = 0; i < 5; i++) {
//   // console.log(i); // 0 ~ 4
//   setTimeout(() => {
//     setTimeout(() => {
//       console.log(i); // 5
//     }, 1000 * i); // 5s ~ 9s
//   }, 1000 * i); // 0s ~ 4s
// }

// new Promise((resolve, reject) => {
//   console.log('c');
//   setInterval(() => {
//     console.log('d');
//   }, 1000);
//   setTimeout(() => {
//     resolve('e');
//   }, 1000);
// }).then((res) => {
//   console.log(res); // 1s这个时间点的微任务
// });

// console.log('f');

// setTimeout(() => {
//     new Promise((resolve) => {
//         console.log('b');
//         resolve('c');
//         setTimeout(() => {
//             console.log('d');
//             setTimeout(() => {
//                 console.log('f');
//             });
//         });
//     })
//         .then((res) => {
//             console.log(res);
//             setTimeout(() => {
//                 console.log('e');
//             });
//         });
//     console.log('a');
// });
// console.log('z');

console.log('global');

for (var i = 1; i <= 5; i++) {
    setTimeout(() => {
        console.log(i); // 6
    }, i * 1000); // 1s ~ 5s
    console.log(i); // 1 ~ 5
}

new Promise(function (resolve) {
    console.log('promise1');
    resolve();
})
.then(function () {
    console.log('then1');
});

setTimeout(() => {
    console.log('timeout2');
    new Promise(function (resolve) {
        console.log('timeout2_promise');
        resolve();
    })
    .then(function () {
        console.log('timeout2_then');
    });

}, 1000);

// global 1 ~ 5 promise1
// 0s微任务: then1
// 1s宏任务：6 timeout2 timeout2_promise timeout2_then
// 2s~5s: 6 * 4